Funnyy
(usa Outra)
Enviado em 17/01/2009 - 08:32h
Ola Pessoal!!
Precisava de uma ajudinha aqui com um programa de ficheiros ( Linguagem Pascal ), é o seguinte o meu programa é sobre gerir matrial informatico, onde tem um ficheiro para clientes que adiciona, modifica e apaga, e outro ficheiro para material q faz o mesmo. Cada cliente/material tem um numero q e inserido automaticamente (atarves do " filesize(f1)+1 " ...
A minha duvida é na parte do apagar, o programa apaga o nr do cliente/material mas depois em vez de continuar apartir do ultimo nr. introduzido, nao continua apartir do nr q apagou, criando nr's iguais...
procedure apagar_clientes;
begin
writeln('Numero');
readln(n1);
if existen=true then
reset(f);
if existe=true then
rewrite(temp);
while not eof (f) do
begin
read(f,r);
if n1<>r.numc then
write(temp,r);
end;
close(f);
close(temp);
if existen=true then
rewrite(f);
if existe=true then
reset(temp);
while not eof (temp) do
begin
read(temp,r);
write(f,r);
end;
close(f);
close(temp);
end;
Esta aqui um excerto do programa onde esta a minha duvida espero que possam ajudar...
.. e aqui esta o programa completo.
Código:
program novo;
uses crt;
type
Clientes=record
nome,morada:string;
idade,numc:integer;
telemovel:longint;
end;
Material=record
nome1,tipo,cor:string;
preco:real;
numm:integer;
end;
fich=file of Clientes;
fich1=file of Material;
var f,temp:fich;
r:clientes;
f1,temp1:fich1;
r1:material;
var n,n1,nm:integer;
nm1:string;
op:char;
function existen:boolean;
{criar Ficheiro}
begin
assign(f,'f:novo');
{$i-}reset(f);
close(f);{$i+}
if ioresult=0 then
existen:=true
else
existen:=false;
end;
function existe:boolean;
begin
assign(temp,'f:temporario');
{$i-}reset(temp);
close(temp);{$i+}
if ioresult=0 then
existe:=true
else
existe:=false;
end;
function existen1:boolean;
begin
assign(f1,'f:novo1');
{$i-}reset(f1);
close(f1);{$i+}
if ioresult=0 then
existen1:=true
else
existen1:=false;
end;
function existe1:boolean;
begin
assign(temp1,'f:temporario');
{$i-}reset(temp1);
close(temp1);{$i+}
if ioresult=0 then
existe1:=true
else
existe1:=false;
end;
procedure adicionar_clientes;
begin
if existen=true then
reset(f)
else
rewrite(f);
begin
r.numc:=filesize(f)+1;
writeln('Numero');
writeln(r.numc);
writeln('Nome');
readln(r.nome);
writeln('Morada');
readln(r.morada);
writeln('Idade');
readln(r.idade);
writeln('Telemovel');
readln(r.telemovel);
if existen=true then
reset(f)
else
rewrite(f);
seek(f,filesize(f));
write(f,r);
close(f);
end
end;
procedure listar_clientes;
begin
if existen=true then
reset(f)
else
rewrite(f);
while not eof(f) do
begin
read(f,r);
writeln('Numero');
writeln(r.numc);
writeln('');
writeln('Nome');
writeln(r.nome);
writeln('');
writeln('Morada');
writeln(r.morada);
writeln('');
writeln('Idade');
writeln(r.idade);
writeln('');
writeln('Telemovel');
writeln(r.telemovel);
readln;
end;
close(f);
readln;
end;
procedure modificar_clientes;
begin
writeln('Numero do Cliente');
readln(n);
if existen=true then
reset(f)
else
rewrite(f);
while not eof (f) do
begin
read(f,r);
if n=r.numc then
begin
writeln('Introduza Novos Dados');
writeln('Numero');
writeln(r.numc);
writeln('Nome');
readln(r.nome);
writeln('Morada');
readln(r.morada);
writeln('Idade');
readln(r.idade);
writeln('Telemovel');
readln(r.telemovel);
seek(f,filepos(f)-1);
write(f,r);
end;
end;
close(f);
end;
procedure apagar_clientes;
begin
writeln('Numero');
readln(n1);
if existen=true then
reset(f);
if existe=true then
rewrite(temp);
while not eof (f) do
begin
read(f,r);
if n1<>r.numc then
write(temp,r);
end;
close(f);
close(temp);
if existen=true then
rewrite(f);
if existe=true then
reset(temp);
while not eof (temp) do
begin
read(temp,r);
write(f,r);
end;
close(f);
close(temp);
end;
procedure adicionar_material;
begin
if existen1=true then
reset(f1)
else
rewrite(f1);
r1.numm:=filesize(f1)+1;
writeln('Numero do Material');
writeln(r1.numm);
writeln('Nome do Material');
readln(r1.nome1);
writeln('Tipo');
readln(r1.tipo);
writeln('Cor');
readln(r1.cor);
writeln('Pre‡o');
readln(r1.preco);
if existen1=true then
reset(f1)
else
rewrite(f1);
seek(f1,filesize(f1));
write(f1,r1);
close(f1);
end;
procedure listar_material;
begin
if existen1=true then
reset(f1)
else
rewrite(f1);
while not eof(f1) do
begin
read(f1,r1);
writeln('Numero');
writeln(r1.numm);
writeln('');
writeln('Nome');
writeln(r1.nome1);
writeln('');
writeln('Pre‡o');
writeln(r1.preco);
readln;
end;
close(f1);
readln;
end;
procedure modificar_material;
begin
writeln('Numero');
readln(nm);
if existen1=true then
reset(f1)
else
rewrite(f1);
while not eof (f1) do
begin
read(f1,r1);
if nm=r1.numm then
begin
writeln('Introduza novos dados');
writeln('Numero');
writeln(r1.numm);
writeln('Nome');
readln(r1.nome1);
writeln('Tipo');
readln(r1.tipo);
writeln('Cor');
readln(r1.cor);
writeln('Pre‡o');
readln(r1.preco);
seek(f1,filepos(f1)-1);
write(f1,r1);
end;
end;
close(f1);
end;
procedure apagar_material;
begin
if existe1=true then
reset(f1);
if existe1=true then
rewrite(temp1);
writeln('Numero');
readln(n1);
while not eof (f1) do
begin
read(f1,r1);
if n1<>r1.numm then
write(temp1,r1);
end;
close(f1);
close(temp1);
if existe1=true then
rewrite(f1);
if existe1=true then
reset(temp1);
while not eof (temp1) do
begin
read(temp1,r1);
write(f1,r1);
end;
close(f1);
close(temp1);
end;
begin
repeat;
clrscr;
writeln('');
writeln('');
writeln('');
writeln('Menu Clientes');
writeln('1-Adicionar Cliente Novo');
writeln('2-Ver lista de Clientes');
writeln('3-Modificar Registo de Cliente(s)');
writeln('4-Eliminar Registo de Cliente(s)');
writeln('');
writeln('');
writeln('');
writeln('Menu Material Inform tico');
writeln('5-Adicionar Novo Registo de Material');
writeln('6-Ver Lista de Material');
writeln('7-Modificar Registo(s) de Material');
writeln('8-Eliminar Registo(s) de Material');
writeln('');
writeln('9-Sair');
writeln('');
writeln('Introduza o numero da occpao que pretende Executar:');
readln(op);
case op of
'1':adicionar_clientes;
'2':listar_clientes;
'3':modificar_clientes;
'4':apagar_clientes;
'5':adicionar_material;
'6':listar_material;
'7':modificar_material;
'8':apagar_material;
end;
until op='9'
end.
Se conseguissem ajudar agradecia imenso ! [[]] **'s